[slug]-897fa94c363f0633.js.map 32 KB

1
  1. {"version":3,"file":"static/chunks/pages/learning-plans/[slug]-897fa94c363f0633.js","mappings":"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","sources":["webpack://_N_E/./public/icons/collection.svg","webpack://_N_E/./public/icons/developers.svg","webpack://_N_E/?8260","webpack://_N_E/./src/components/dls/Pill/index.tsx","webpack://_N_E/./src/components/Course/CourseDetails/index.tsx","webpack://_N_E/./src/components/Course/Buttons/StartOrContinueLearning/index.tsx","webpack://_N_E/./src/components/Course/CourseDetails/StatusHeader/index.tsx","webpack://_N_E/./src/components/Course/CourseDetails/Tabs/MainDetails/DetailSection/index.tsx","webpack://_N_E/./src/components/Course/CourseDetails/Tabs/MainDetails/index.tsx","webpack://_N_E/./src/components/Course/CourseDetails/Tabs/MainDetails/DetailSection/AuthorDetail/index.tsx","webpack://_N_E/./src/components/Course/CourseDetails/Tabs/Syllabus/index.tsx","webpack://_N_E/./src/components/Course/CourseDetails/TabSwitcherItem/index.tsx","webpack://_N_E/./src/pages/learning-plans/[slug]/index.tsx","webpack://_N_E/./src/components/Course/CourseDetails/CourseDetails.module.scss","webpack://_N_E/./src/components/Course/CourseDetails/StatusHeader/StatusHeader.module.scss","webpack://_N_E/./src/components/Course/CourseDetails/TabSwitcherItem/TabSwitcherItem.module.scss","webpack://_N_E/./src/components/Course/CourseDetails/Tabs/MainDetails/DetailSection/AuthorDetail/AuthorDetail.module.scss","webpack://_N_E/./src/components/Course/CourseDetails/Tabs/MainDetails/DetailSection/DetailSection.module.scss","webpack://_N_E/./src/components/Course/CourseDetails/Tabs/Syllabus/Syllabus.module.scss","webpack://_N_E/./src/components/dls/Pill/Pill.module.scss","webpack://_N_E/./src/pages/learning-plans/[slug]/courses.module.scss"],"sourcesContent":["var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgCollection = function SvgCollection(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.89 0H3.454C2.581 0 2 .581 2 1.453v20.344c0 .872.581 1.453 1.453 1.453h17.438c.872 0 1.453-.581 1.453-1.453V1.453C22.344.581 21.762 0 20.89 0ZM6.36 18.89c-.873 0-1.454-.58-1.454-1.453 0-.871.582-1.453 1.453-1.453.872 0 1.454.582 1.454 1.454 0 .871-.582 1.453-1.454 1.453Zm0-5.812c-.873 0-1.454-.581-1.454-1.453 0-.872.582-1.453 1.453-1.453.872 0 1.454.581 1.454 1.453 0 .872-.582 1.453-1.454 1.453Zm0-5.812c-.873 0-1.454-.582-1.454-1.454 0-.871.582-1.453 1.453-1.453.872 0 1.454.582 1.454 1.454 0 .871-.582 1.453-1.454 1.453Zm13.078 2.906h-8.72v-4.36h8.72v4.36Z\",\n fill: \"currentColor\"\n })));\n};\nexport default SvgCollection;","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgDevelopers = function SvgDevelopers(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#a)\",\n fill: \"currentColor\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.844 1H.969A.97.97 0 0 0 0 1.969v19.375a.97.97 0 0 0 .969.968h3.875V1ZM6.781 1v21.313h15.5a.97.97 0 0 0 .969-.97V1.97A.97.97 0 0 0 22.281 1h-15.5Zm3.875 3.875h2.906v1.938h-2.906V4.875Zm2.906 13.563h-2.906V16.5h2.906v1.938Zm2.907-3.875h-3.875v-1.938h3.875v1.938Zm2.906-3.876h-5.813V8.75h5.813v1.938Z\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M0 0h23.25v23.25H0z\"\n })))));\n};\nexport default SvgDevelopers;","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/learning-plans/[slug]\",\n function () {\n return require(\"private-next-pages/learning-plans/[slug]/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/learning-plans/[slug]\"])\n });\n }\n ","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport styles from './Pill.module.scss';\n\nexport enum PillSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n}\n\ntype Props = {\n children: React.ReactNode;\n size?: PillSize;\n};\n\nconst Pill: React.FC<Props> = ({ children, size = PillSize.MEDIUM }) => {\n return (\n <div\n className={classNames(styles.container, {\n [styles.medium]: size === PillSize.MEDIUM,\n [styles.small]: size === PillSize.SMALL,\n })}\n >\n {children}\n </div>\n );\n};\n\nexport default Pill;\n","import React, { useMemo, useState } from 'react';\n\nimport Image from 'next/image';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './CourseDetails.module.scss';\n\nimport StartOrContinueLearning from '@/components/Course/Buttons/StartOrContinueLearning';\nimport ContentContainer from '@/components/Course/ContentContainer';\nimport StatusHeader from '@/components/Course/CourseDetails/StatusHeader';\nimport MainDetails from '@/components/Course/CourseDetails/Tabs/MainDetails';\nimport DetailSection from '@/components/Course/CourseDetails/Tabs/MainDetails/DetailSection';\nimport AuthorDetail from '@/components/Course/CourseDetails/Tabs/MainDetails/DetailSection/AuthorDetail';\nimport Syllabus from '@/components/Course/CourseDetails/Tabs/Syllabus';\nimport TabSwitcherItem from '@/components/Course/CourseDetails/TabSwitcherItem';\nimport Button, { ButtonVariant } from '@/dls/Button/Button';\nimport Switch from '@/dls/Switch/Switch';\nimport DetailsIcon from '@/icons/collection.svg';\nimport SyllabusIcon from '@/icons/developers.svg';\nimport ArrowLeft from '@/icons/west.svg';\nimport { Course } from '@/types/auth/Course';\nimport { logButtonClick, logEvent } from '@/utils/eventLogger';\nimport { getCoursesNavigationUrl } from '@/utils/navigation';\n\ntype Props = {\n course: Course;\n};\n\nenum Tab {\n MAIN = 'main',\n SYLLABUS = 'syllabus',\n}\n\nconst CourseDetails: React.FC<Props> = ({ course }) => {\n const { title, image, id } = course;\n const { t } = useTranslation('learn');\n const [selectedTab, setSelectedTab] = useState(Tab.MAIN);\n\n const onTabChange = (value: Tab) => {\n logEvent('course_details_tab_change', { courseId: id, tab: value });\n setSelectedTab(value);\n };\n\n const onBackButtonClicked = () => {\n logButtonClick('back_to_courses_course_details', { courseId: id });\n };\n\n const tabs = useMemo(\n () => [\n {\n name: <TabSwitcherItem icon={<DetailsIcon />} value={t('tabs.main')} />,\n value: Tab.MAIN,\n },\n {\n name: <TabSwitcherItem icon={<SyllabusIcon />} value={t('tabs.syllabus')} />,\n value: Tab.SYLLABUS,\n },\n ],\n [t],\n );\n\n const tabComponents = useMemo(\n () => ({\n [Tab.MAIN]: <MainDetails course={course} />,\n [Tab.SYLLABUS]: <Syllabus course={course} />,\n }),\n [course],\n );\n\n return (\n <ContentContainer>\n <Button\n onClick={onBackButtonClicked}\n href={getCoursesNavigationUrl()}\n variant={ButtonVariant.Ghost}\n >\n <ArrowLeft />\n <p className={styles.backText}>{t('back-to-learning-plans')}</p>\n </Button>\n <div className={styles.headerContainer}>\n <div>\n <p className={styles.title}>{title}</p>\n </div>\n <StatusHeader course={course} />\n </div>\n\n <div className={styles.imgContainer}>\n <Image alt={title} src={image} layout=\"fill\" />\n </div>\n\n <Switch selected={selectedTab} items={tabs} onSelect={onTabChange} />\n {tabComponents[selectedTab]}\n {selectedTab === Tab.MAIN && (\n <>\n {!course.isUserEnrolled && (\n <>\n <StatusHeader course={course} isCTA />\n </>\n )}\n <DetailSection\n title={t('about-author')}\n description={<AuthorDetail author={course.author} />}\n />\n {course.isUserEnrolled && (\n <div className={styles.startLearningButton}>\n <StartOrContinueLearning course={course} isHeaderButton={false} />\n </div>\n )}\n </>\n )}\n </ContentContainer>\n );\n};\n\nexport default CourseDetails;\n","import React from 'react';\n\nimport { useRouter } from 'next/router';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport Button from '@/dls/Button/Button';\nimport { Course } from '@/types/auth/Course';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { getLessonNavigationUrl } from '@/utils/navigation';\n\ntype Props = {\n course: Course;\n isHeaderButton?: boolean;\n};\n\nconst StartOrContinueLearning: React.FC<Props> = ({ course, isHeaderButton = true }) => {\n const { t } = useTranslation('learn');\n const { lessons, continueFromLesson, id, slug } = course;\n /**\n * there is a corner case when the user enrolls,\n * goes back to main page then clicks start learning again,\n * continueFromLesson is undefined since it has been cached from\n * before the user enrolled.\n */\n const redirectToLessonSlug = continueFromLesson || lessons?.[0]?.slug;\n const router = useRouter();\n const userCompletedAnyLesson = lessons.some((lesson) => lesson.isCompleted === true);\n const onContinueLearningClicked = () => {\n logButtonClick('continue_learning', {\n courseId: id,\n isHeaderButton,\n });\n router.push(getLessonNavigationUrl(slug, redirectToLessonSlug));\n };\n\n const onStartLearningClicked = () => {\n logButtonClick('start_learning', {\n courseId: id,\n isHeaderButton,\n });\n router.push(getLessonNavigationUrl(slug, redirectToLessonSlug));\n };\n\n if (userCompletedAnyLesson) {\n return <Button onClick={onContinueLearningClicked}>{t('continue-learning')}</Button>;\n }\n return <Button onClick={onStartLearningClicked}>{t('start-learning')}</Button>;\n};\n\nexport default StartOrContinueLearning;\n","/* eslint-disable react-func/max-lines-per-function */\nimport React, { useState } from 'react';\n\nimport { useRouter } from 'next/router';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './StatusHeader.module.scss';\n\nimport StartOrContinueLearning from '@/components/Course/Buttons/StartOrContinueLearning';\nimport CourseFeedback, { FeedbackSource } from '@/components/Course/CourseFeedback';\nimport Button from '@/dls/Button/Button';\nimport Pill from '@/dls/Pill';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport useMutateWithoutRevalidation from '@/hooks/useMutateWithoutRevalidation';\nimport { Course } from '@/types/auth/Course';\nimport { enrollUser } from '@/utils/auth/api';\nimport { makeGetCourseUrl } from '@/utils/auth/apiPaths';\nimport { isLoggedIn } from '@/utils/auth/login';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport {\n getCourseNavigationUrl,\n getLessonNavigationUrl,\n getLoginNavigationUrl,\n} from '@/utils/navigation';\n\ntype Props = {\n course: Course;\n isCTA?: boolean;\n};\n\nconst StatusHeader: React.FC<Props> = ({ course, isCTA = false }) => {\n const { title, id, isUserEnrolled, slug, isCompleted, lessons } = course;\n const [isLoading, setIsLoading] = useState(false);\n const toast = useToast();\n const router = useRouter();\n const { t } = useTranslation('learn');\n const mutate = useMutateWithoutRevalidation();\n\n const onEnrollClicked = () => {\n if (isLoggedIn()) {\n logButtonClick('user_enroll_course', { courseId: id, isCTA });\n setIsLoading(true);\n enrollUser(course.id)\n .then(() => {\n toast(\n t('enroll-success', {\n title,\n }),\n {\n status: ToastStatus.Success,\n },\n );\n mutate(makeGetCourseUrl(slug), (currentCourse: Course) => {\n return {\n ...currentCourse,\n isUserEnrolled: true,\n };\n });\n // if the course has lessons, redirect to the first lesson\n if (lessons?.length > 0) {\n router.replace(getLessonNavigationUrl(slug, lessons[0].slug));\n }\n })\n .catch(() => {\n toast(t('common:error.general'), {\n status: ToastStatus.Error,\n });\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n logButtonClick('guest_enroll_course', { courseId: id, isCTA });\n router.replace(getLoginNavigationUrl(getCourseNavigationUrl(slug)));\n }\n };\n\n if (isCTA) {\n if (isUserEnrolled === true) {\n return <></>;\n }\n return (\n <Button isDisabled={isLoading} isLoading={isLoading} onClick={onEnrollClicked}>\n {t('enroll')}\n </Button>\n );\n }\n if (isCompleted) {\n return (\n <div className={styles.completedContainer}>\n <Pill>{t('completed')}</Pill>\n {course?.userHasFeedback === false && (\n <CourseFeedback course={course} source={FeedbackSource.CoursePage} />\n )}\n </div>\n );\n }\n if (isUserEnrolled === true) {\n return <StartOrContinueLearning course={course} />;\n }\n\n return (\n <Button isDisabled={isLoading} isLoading={isLoading} onClick={onEnrollClicked}>\n {t('enroll')}\n </Button>\n );\n};\n\nexport default StatusHeader;\n","import React from 'react';\n\nimport styles from './DetailSection.module.scss';\n\ntype Props = {\n title: string;\n description: React.ReactNode;\n};\n\nconst DetailSection: React.FC<Props> = ({ title, description }) => {\n return (\n <div className={styles.container}>\n <div className={styles.title}>{`${title}: `} </div>\n <span className={styles.description}>{description}</span>\n </div>\n );\n};\n\nexport default DetailSection;\n","/* eslint-disable unicorn/no-array-reduce */\nimport React from 'react';\n\nimport { MilkdownProvider } from '@milkdown/react';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport DetailSection from './DetailSection';\n\nimport MarkdownEditor from '@/components/MarkdownEditor';\nimport { Course } from '@/types/auth/Course';\n\ntype Props = {\n course: Course;\n};\n\nconst MainDetails: React.FC<Props> = ({ course }) => {\n const { t } = useTranslation('learn');\n const { description, dailyMinutes, lessons = [] } = course;\n\n // const tagsString = tags?.reduce((acc, currentValue) => {\n // if (!acc) return currentValue;\n // return `${acc}, ${currentValue}`;\n // }, '');\n\n return (\n <>\n <DetailSection\n title={t('learn-duration')}\n description={t('duration-daily', {\n dailyMins: dailyMinutes,\n days: lessons.length,\n })}\n />\n <MilkdownProvider>\n <DetailSection\n title={t('description')}\n description={<MarkdownEditor isEditable={false} defaultValue={description} />}\n />\n </MilkdownProvider>\n </>\n );\n};\n\nexport default MainDetails;\n","import React from 'react';\n\nimport styles from './AuthorDetail.module.scss';\n\nimport { CourseAuthor } from '@/types/auth/Course';\n\ntype Props = {\n author: CourseAuthor;\n};\n\nconst AuthorDetail: React.FC<Props> = ({ author }) => {\n return (\n <>\n <span className={styles.author}>{author.name}</span> <span>{author.biography}</span>\n </>\n );\n};\n\nexport default AuthorDetail;\n","/* eslint-disable react/no-array-index-key */\nimport React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './Syllabus.module.scss';\n\nimport CompletedTick from '@/components/Course/CompletedTick';\nimport Link, { LinkVariant } from '@/dls/Link/Link';\nimport { Course } from '@/types/auth/Course';\nimport { isLoggedIn } from '@/utils/auth/login';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { toLocalizedNumber } from '@/utils/locale';\nimport { getLessonNavigationUrl, getLoginNavigationUrl } from '@/utils/navigation';\n\ntype Props = {\n course: Course;\n};\n\nconst Syllabus: React.FC<Props> = ({ course }) => {\n const { lessons = [], slug: courseSlug } = course;\n const { t, lang } = useTranslation('learn');\n\n const isUserLoggedIn = isLoggedIn();\n\n const onDayClick = (dayNumber: number, lessonId: string) => {\n logButtonClick(isUserLoggedIn ? 'course_syllabus_day' : 'guest_course_syllabus_day', {\n courseId: course.id,\n dayNumber,\n lessonId,\n });\n };\n\n return (\n <div className={styles.syllabusContainer}>\n {lessons.map((lesson, index) => {\n const dayNumber = index + 1;\n const { title, isCompleted, id, slug } = lesson;\n const url = getLessonNavigationUrl(courseSlug, slug);\n\n return (\n <p className={styles.container} key={index}>\n <span className={styles.day}>{`${t('day')} ${toLocalizedNumber(\n dayNumber,\n lang,\n )}`}</span>\n <span>\n {`: `}\n <Link\n onClick={() => onDayClick(dayNumber, id)}\n href={isUserLoggedIn ? url : getLoginNavigationUrl(url)}\n variant={LinkVariant.Highlight}\n >\n {title}\n </Link>\n {isCompleted ? <CompletedTick /> : ''}\n </span>\n </p>\n );\n })}\n </div>\n );\n};\n\nexport default Syllabus;\n","import React from 'react';\n\nimport styles from './TabSwitcherItem.module.scss';\n\ntype Props = {\n icon: JSX.Element;\n value: string;\n};\n\nconst TabSwitcherItem: React.FC<Props> = ({ icon, value }) => {\n return (\n <div className={styles.container}>\n {icon} <p className={styles.value}>{value}</p>\n </div>\n );\n};\n\nexport default TabSwitcherItem;\n","/* eslint-disable react/no-multi-comp */\nimport { GetStaticPaths, GetStaticProps, NextPage } from 'next';\nimport { useRouter } from 'next/router';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './courses.module.scss';\n\nimport CourseDetails from '@/components/Course/CourseDetails';\nimport DataFetcher from '@/components/DataFetcher';\nimport NextSeoWrapper from '@/components/NextSeoWrapper';\nimport PageContainer from '@/components/PageContainer';\nimport Spinner from '@/dls/Spinner/Spinner';\nimport layoutStyles from '@/pages/index.module.scss';\nimport { Course } from '@/types/auth/Course';\nimport { getCourse, privateFetcher } from '@/utils/auth/api';\nimport { makeGetCourseUrl } from '@/utils/auth/apiPaths';\nimport { getLanguageAlternates } from '@/utils/locale';\nimport { getCanonicalUrl, getCourseNavigationUrl } from '@/utils/navigation';\nimport {\n ONE_WEEK_REVALIDATION_PERIOD_SECONDS,\n REVALIDATION_PERIOD_ON_ERROR_SECONDS,\n} from '@/utils/staticPageGeneration';\n\nconst Loading = () => (\n <div className={layoutStyles.loadingContainer}>\n <Spinner />\n </div>\n);\n\ninterface Props {\n hasError?: boolean;\n page?: any[];\n course: Course;\n}\n\nconst LearningPlanPage: NextPage<Props> = ({ course }) => {\n const { lang, t } = useTranslation('learn');\n const router = useRouter();\n const { slug } = router.query;\n const url = getCourseNavigationUrl(course.slug);\n\n return (\n <>\n <NextSeoWrapper\n title={course.title}\n canonical={getCanonicalUrl(lang, url)}\n description={course?.metaDescription || t('learning-plan-meta-desc')}\n languageAlternates={getLanguageAlternates(url)}\n />\n <div className={layoutStyles.pageContainer}>\n <div className={styles.container}>\n <PageContainer>\n <DataFetcher\n loading={Loading}\n queryKey={makeGetCourseUrl(slug as string)}\n fetcher={privateFetcher}\n render={\n ((courseDetailsResponse: Course) => (\n <>\n <CourseDetails course={courseDetailsResponse} />\n </>\n )) as any\n }\n />\n </PageContainer>\n </div>\n </div>\n </>\n );\n};\n\nexport const getStaticPaths: GetStaticPaths = async () => ({\n paths: [], // no pre-rendered chapters at build time.\n fallback: 'blocking', // will server-render pages on-demand if the path doesn't exist.\n});\n\nexport const getStaticProps: GetStaticProps = async ({ params }) => {\n try {\n const course = await getCourse(params.slug as string);\n return {\n props: {\n course,\n },\n revalidate: ONE_WEEK_REVALIDATION_PERIOD_SECONDS,\n };\n } catch (error) {\n return {\n props: {\n hasError: true,\n },\n revalidate: REVALIDATION_PERIOD_ON_ERROR_SECONDS, // 35 seconds will be enough time before we re-try generating the page again.\n };\n }\n};\n\nexport default LearningPlanPage;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"backText\":\"CourseDetails_backText__8Hu7e\",\"headerContainer\":\"CourseDetails_headerContainer__0KFWS\",\"title\":\"CourseDetails_title__WmnyB\",\"author\":\"CourseDetails_author__C0c06\",\"imgContainer\":\"CourseDetails_imgContainer__iJ_rf\",\"startLearningButton\":\"CourseDetails_startLearningButton__vdo76\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"completedContainer\":\"StatusHeader_completedContainer__DjKg6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"TabSwitcherItem_container__l0AFM\",\"value\":\"TabSwitcherItem_value__9Zast\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"author\":\"AuthorDetail_author__QNqjO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"DetailSection_title__4mbZq\",\"container\":\"DetailSection_container__CnjV5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"syllabusContainer\":\"Syllabus_syllabusContainer__3hJSK\",\"container\":\"Syllabus_container__vPuDB\",\"day\":\"Syllabus_day__jG8s6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Pill_container__FoIEg\",\"small\":\"Pill_small__zCILo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"courses_container__h1_I3\"};"],"names":["_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","width","height","viewBox","fill","xmlns","d","_g","_defs","clipPath","id","window","__NEXT_P","push","PillSize","children","size","MEDIUM","div","className","classNames","styles","SMALL","lessons","course","isHeaderButton","useTranslation","continueFromLesson","slug","redirectToLessonSlug","router","useRouter","some","lesson","isCompleted","Button","onClick","logButtonClick","courseId","getLessonNavigationUrl","isCTA","title","isUserEnrolled","useState","isLoading","setIsLoading","toast","useToast","mutate","useMutateWithoutRevalidation","onEnrollClicked","isLoggedIn","enrollUser","then","status","ToastStatus","makeGetCourseUrl","currentCourse","replace","catch","finally","getLoginNavigationUrl","getCourseNavigationUrl","isDisabled","Pill","userHasFeedback","CourseFeedback","source","FeedbackSource","StartOrContinueLearning","description","span","dailyMinutes","DetailSection","dailyMins","days","MilkdownProvider","MarkdownEditor","isEditable","defaultValue","author","name","biography","lang","isUserLoggedIn","map","index","dayNumber","url","courseSlug","p","toLocalizedNumber","Link","lessonId","onDayClick","href","variant","LinkVariant","CompletedTick","icon","value","Tab","image","MAIN","selectedTab","setSelectedTab","tabs","useMemo","TabSwitcherItem","DetailsIcon","SyllabusIcon","SYLLABUS","tabComponents","MainDetails","Syllabus","ContentContainer","getCoursesNavigationUrl","ButtonVariant","ArrowLeft","StatusHeader","Image","alt","src","layout","Switch","selected","items","onSelect","logEvent","tab","AuthorDetail","Loading","layoutStyles","Spinner","query","NextSeoWrapper","canonical","getCanonicalUrl","metaDescription","languageAlternates","getLanguageAlternates","PageContainer","DataFetcher","loading","queryKey","fetcher","privateFetcher","render","courseDetailsResponse","CourseDetails","module","exports"],"sourceRoot":""}